擅长:python、mysql、java
<p>对于非特定于Pandas的解决方案,此<code>split_rows</code>函数适用于任何iterable的namedtuples(或者如果您更改了<code>rd = ...</code>行,则任何可以指定的内容)</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
def split_rows(namedtuple_iterable, cols):
for row in namedtuple_iterable:
rd = row._asdict()
cs = [(col, rd.pop(col)) for col in cols]
for key, value in cs:
yield {**rd, key: value}
df = pd.DataFrame(
{
"city": ["BCN", "Moscow"],
"country": ["Spain", "Russia"],
"inf_1": [3, 5],
"inf_2": [4, 7],
}
)
for sr in split_rows(df.itertuples(), ("inf_1", "inf_2")):
print(sr)
</code></pre>
<p>输出</p>
<pre><code>{'Index': 0, 'city': 'BCN', 'country': 'Spain', 'inf_1': 3}
{'Index': 0, 'city': 'BCN', 'country': 'Spain', 'inf_2': 4}
{'Index': 1, 'city': 'Moscow', 'country': 'Russia', 'inf_1': 5}
{'Index': 1, 'city': 'Moscow', 'country': 'Russia', 'inf_2': 7}
</code></pre>